﻿# местоположение
#
from django.db import models
from django.contrib.auth.models import User
from django.core.files.storage import default_storage

#Дерево отделов (структуры рабочих мест) SHM
from shm.models import Department, Employee
#from task.models import Task


NODE_TYPE_CHOICES = (
    ('standart', 'Стандарт'),
    ('storage', 'Склад'),
    ('out', 'Списанные'),
    ('public', 'Общедоступное'),
)


# Фотографии
class Photo(models.Model):
    # Наименование
    title = models.CharField(max_length=64, verbose_name="Наименование")  
    image = models.ImageField(upload_to='files/location/photo/', verbose_name="Файл фотографии")

    class Meta:
        verbose_name = "Фотография"    
        verbose_name_plural = "Фотографии"
    
        
    def __unicode__(self):
        return u"%s" % self.title

# иконки
class Icon(models.Model):
    # Наименование
    title = models.CharField(max_length=64, verbose_name="Наименование")  
    image = models.ImageField(upload_to='files/location/icon/', verbose_name="Файл Иконки")

    class Meta:
        verbose_name = "Иконка"    
        verbose_name_plural = "Иконки"
        
    def __unicode__(self):
        return u"%s" % self.title







# Планы помещений
class MapFile(models.Model):
    title = models.CharField(max_length=64, verbose_name="Наименование")  
    plan = models.ImageField(upload_to='files/location/map/', verbose_name="Файл плана")

    class Meta:
        verbose_name = "План помещения"    
        verbose_name_plural = "Планы помещений"
    
        
    def __unicode__(self):
        return u"%s" % self.title


#Дерево Помещений
class MapTree(models.Model):
    # Принадлежность (FK)
    parent = models.ForeignKey('self', null=True, blank=True, verbose_name="Принадлежность")
    # Наименование
    title = models.CharField(max_length=64, verbose_name="Наименование")
    # Наименование краткое
    title_short = models.CharField(max_length=64, blank=True, verbose_name="Наименование краткое")
    # Адрес
    address = models.CharField(max_length=64, blank=True, verbose_name="Адрес")
    # Телефон
    phone = models.CharField(max_length=32, blank=True, verbose_name="Телефон")
    # Размеры(Ширина Длинна высота)
    size = models.CharField(max_length=16, blank=True, verbose_name="Размеры")
    # Примечание
    note = models.TextField(blank=True, verbose_name="Примечание")
    # Файл плана 
    mapfile = models.ForeignKey(MapFile, null=True, blank=True, verbose_name="План")
    # иконка
    icon = models.ForeignKey(Icon, null=True,  blank=True, verbose_name="Иконка")

    class Meta:
        verbose_name = "Помещение"
        verbose_name_plural = "Дерево помещений"        
        
    def __unicode__(self):
        return u"%s" % self.title
        
        
       


# Рабочее место 
class WorkPlace(models.Model):
    # Наименование
    title = models.CharField(max_length=64, verbose_name="Наименование")
    # Наименование краткое
    title_short = models.CharField(max_length=64, blank=True, verbose_name="Наименование краткое")
    #Дерево Помещений (FK)
    maptree = models.ForeignKey(MapTree, null=True,  blank=True, verbose_name="Помещения")
    #Дерево Отделов (FK) (необязательное)
    department = models.ForeignKey(Department, null=True,  blank=True, verbose_name="Отдел")
    #Материально-ответственное лицо (FK)
    responsible = models.ForeignKey(Employee, verbose_name='Материально-ответственное лицо',related_name = 'ws_responsible_set', default=None)
    #Ответственный пользователь (FK)
    main_user = models.ForeignKey(Employee, verbose_name='Ответственный пользователь',related_name = 'ws_mainuser_set', default=None)
    #Пользователи (FK)
    users = models.ManyToManyField(Employee, verbose_name='Пользователи', related_name = 'ws_users_set', default=None)
    #Сетевые интерфейсы (FK)
    #net_interface = models.ForeignKey(NetInterface, null=True,  blank=True, verbose_name="Сетевые интерфейсы")
    #Координаты на плане
    map_position_x = models.IntegerField(blank=True, default=0, verbose_name="Координаты на плане по горизонтали")
    map_position_y = models.IntegerField(blank=True, default=0, verbose_name="Координаты на плане по вертикали") 
    #Телефон
    phone = models.CharField(max_length=32, blank=True, verbose_name="Телефон")
    #фотографии (FK)
    photo = models.ForeignKey(Photo, null=True,  blank=True, verbose_name="Фотографии")
    #фиктивное рабочее место
    virtual = models.BooleanField(verbose_name="фиктивное рабочее место")
    #Тип узла (Стандарт, Склад, Списанные, Общедоступное)
    node_type = models.CharField(max_length=8, choices=NODE_TYPE_CHOICES, verbose_name='Тип узла', default=None)  
    
    report = models.FileField(upload_to='files/location/workplace/report/', verbose_name="Файл отчета")
    # иконка
    icon = models.ForeignKey(Icon, null=True,  blank=True, verbose_name="Иконка")
    
      
    class Meta:
        verbose_name = "Рабочее место"
        verbose_name_plural = "Рабочие места"        
        
    def __unicode__(self):
        return u"%s" % self.title 
        
        
        
        